package cn.tedu.csmall.product.schedule;

import cn.tedu.csmall.product.service.IBrandService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author 何惠民
 */
@Slf4j
@Component
public class CacheSchedule {

    @Autowired
    private IBrandService brandService;

    public CacheSchedule() {
        log.debug("创建计划任务对象:CacheSchedule");
    }

    //fixedRate:执行频率 ,以毫秒值为单位,将按照上一次开始的执行时间来计算下一次执行时间,以毫秒为单位
    //fixedDelay:执行间隔时间,以毫秒值为单位,将按照上一次结束的执行时间来计算下一次执行时间
    //cron:使用一个字符串,其中包括6-7个值,各个值之间使用1个空格进行分隔
    // >>在cron的字符串中依次表示:秒 分 时 日 月 周(星期) [年](可选)
    // >>以上各值都可以使用通配符       (L)最后一个值 日和星期
    // >>使用(*)号表示任意值
    // >>使用(?)号表示不关心具体值 只能用于日和周(星期)
    // >> 列如  "56 34 12 15 11 ? 2022" 表示2022年11月15日12点34分56秒,无视当天星期几
    // >>以上各值,可以使用"x/x"格式的值, 列如;在分钟的位置设置"1/5",则表示分钟的值为1时执行, 且每间隔五分钟执行一次
    @Scheduled(fixedRate = 5 * 60 * 1000)
    public void rebuildBrandCache(){
        log.debug("开始执行[重建品牌缓存]的计划任务");
        brandService.rebuildCache();
        log.debug("[重建品牌缓存]的计划任务执行完成");
    }
}
